Automatic repeat request (ARQ) is a method for error control in data transmission. When a packet error is detected by a receiver, a request is automatically sent to the transmitter to re-transmit the packet. This process is repeated until the packet is received without an error or the error continues beyond a predetermined number of re-transmissions. Transmission Control Protocol (TCP) is a conventional ARQ-style protocol that is used along with the Internet Protocol (IP) to transmit packets of information. While IP handles the actual delivery of the data, TCP is a connection-oriented, reliable transport protocol that keeps track of the individual packets that comprise a message and utilizes acknowledgement packets (ACKs) in an attempt to ensure that the packets properly arrive at their destination. After a packet of information is transmitted, a response in the form of an ACK is awaited from the receiver as a confirmation that the packet was received.
Because of the delays in a communication system, it is usually not practical to send a single packet of data and wait for an ACK before sending more data. Thus, TCP employs a “window” functionality wherein a certain amount of datagrams or bytes of data can be transmitted without receiving any ACKs. Once the data limit is reached, no more data can be transmitted until ACKs are received. This window is the minimum of the congestion window (cwnd) and the advertised window (awnd) and represents the amount of unacknowledged data the sender transmits. The awnd is negotiated between the client and network at the initiation of a TCP session via a handshake operation, and is ultimately fixed at the client end, where the awnd is defined. The awnd effectively represents the amount of unacknowledged data in the system under steady state, error-free conditions. In typical operating conditions, particularly at the start of the TCP flow, the congestion window (cwnd) can limit the overall amount of unacknowledged data the sender transmits. The cwnd is increased every time an ACK is received, and is decreased every time a packet is lost, and therefore limits throughput in the face of loss.
In wired networks, the total delay or round trip time (RTT) between the transmission of a packet of data by the network and the receiving of an ACK at the network is usually relatively small, and is not a major issue. However, in wireless networks, the RTT can be much longer, and thus the overall throughput rate for TCP connections is often defined not by the wireless communications interface (referred to herein as the “air interface”), but by the RTT. It is therefore necessary in wireless networks to ensure that the sender be able to transmit a large volume of unacknowledged data (i.e. the awnd must be large). Assuming there are no lost packets due to congestion, as mentioned above, in the steady state condition the amount of unacknowledged data in the system will be limited by awnd. The maximum rate achievable is thus:Maximum rate achievable=Min(rate available in air interface, awnd/RTT.  (1)In other words, the max rate achievable is the minimum of the rate available in the air interface and that governed by the awnd and the RTT.
FIG. 1 is an illustration of an exemplary wireless communication link showing the RTT for a TCP segment in a steady state condition. In FIG. 1, a server 100 transmits a TCP segment 102 over an air interface 104 to a client 106. Because the TCP segment is received by the client 106, the client transmits a TCP ACK 108 back to the server 100. The TCP ACK 108 is first sent to a transmit (Tx) buffer 110 prior to its transmission over the air interface 104. The TX buffer acts in a First in First out (FIFO) fashion but because the Tx buffer 110 is empty, the TCP ACK 108 is immediately transmitted out over the air interface 104 back to the server 100, and a RTT 112 is established. For example, if the allocated air interface resources provide the client 106 (typically user equipment (UE)) with 2 Mbps of throughput, RTT=150 ms, and awnd=20000 bytes, then the maximum rate achievable is:Maximum rate achievable=Min(2e6,20000*8/150e−3)=1.067 Mbps.  (2)Therefore, in this example, because of the flow control functionality associated with TCP operation, despite the large allocation provided to the user only approximately half the available bandwidth is used. It is also clear from equation (1) that if the RTT increases then the overall throughput will decrease.
However, this example does not take into account that the UE may also be transmitting uplink (UL) data at the same time. If there is no prioritization of ACK packets over regular data traffic, then when the UE transmits UL traffic, the RTT of the ACK for the TCP link in the downlink (DL) is adversely affected.
FIG. 2 is an illustration of an exemplary wireless communication link showing the RTT for a TCP segment when the client 206 is also transmitting DL data 214. In FIG. 2, a server 200 transmits a TCP segment 202 over an air interface 204 to a client 206. Because the TCP segment is received by the client 206, the client transmits a TCP ACK 208 back to the server 200. The TCP ACK 208 is first sent to a transmit (Tx) buffer 210 prior to its transmission over the air interface 104. However, in the example of FIG. 2, UL data 214 to be transmitted from the client 206 has already been forwarded to Tx buffer 210. This data could be the result of a file transfer protocol (FTP) from the UE in the UL direction, a streaming service, and the like. Because the UL data 214 in the Tx buffer 210 is not immediately drained from the Tx buffer, the TCP ACK 208 must wait behind the UL data until all of the UL data in the Tx buffer has been transmitted. In other words, because the TCP ACK 208 for the TCP segment 202 does not have any special priority over the UL data 214, the TCP ACK must wait its turn behind the UL data in the Tx buffer 210. The result is that the RTT 212 increases. Because the RTT 212 has increased in the example of FIG. 2 and because the awnd cannot change dynamically, the maximum rate achievable will decrease. Thus, comparing FIG. 1 to FIG. 2, in FIG. 2 the DL throughput will decrease, because the RTT is increased.
It should be further noted that the performance degradation illustrated in FIG. 2 (as compared to FIG. 1) will be further increased when an asymmetric link is present, for example when there is a large DL throughput and a small UL throughput. In this example, many TCP ACKs 208 will need to be transmitted, and these TCP ACKs will quickly pile up at the back of the Tx buffer 210, while the blocking UL data 214 in the Tx buffer drains very slowly. The DL rate effectively becomes a function of the UL rate, because the DL is limited by the speed at which ACKs can be transmitted back to the network.
The conventional solution to the problem described above, especially with regard to wired networks, is to prioritize ACKs as compared to data packets. Any ACKs would therefore effectively jump the Tx buffer (i.e. be placed at the front of the Tx buffer for immediate transmission), ahead of any UL data. To implement this prioritization scheme, ACKs must first be identified. To make this identification, the processor may inspect a length field within the packet. If the length field indicates that no data is present, then the packet is an ACK.
Although the conventional wired network solution of prioritizing ACKs over data results in improvements to DL throughput, this solution may not be sufficient in wireless networks where communications over the air interface are frequently subject to transmission errors. Therefore, it would be advantageous to improve DL throughput in wireless network using additional ACK prioritization schemes.